分类
联系方式
  1. 新浪微博
  2. E-mail

Flutter Engine UIDartState

介绍

该类继承自 tonic 的 DartState,是对 Dart Isolate 的引用,基于该类派生出 DartIsolate。UIDartState 是 Flutter Engine 中比较重要的一个底层类。

UIDartState::Context

Context 是 UIDartState 的内部结构体,从注释中,它的功能是:

Shell 中掌握的资源,如果要暴露到框架中,需要通过 Context 进行访问。因此该结构是整个框架中底层资源的上下文访问。

涉及到的资源有:

名称 类型 说明
task_runners TaskRunners 访问 Flutter 的 4 条 TaskRunner:platform、raster、ui、io
snapshot_delegate SnapshotDelegate 收集 Flutter 视图结构的 raster snapshots
io_manager IOManager 供 Isolate 使用的 IO 管理器,用于异步纹理上传
unref_queue SkiaUnrefQueue 供 Isolate 使用,收集 GPU 资源的 unref 队列
image_decoder ImageDecoder 图片解码器
image_generator_registry ImageGeneratorRegistry 也是与图片解码相关
advisory_script_uri String 用于调试的 advisory 脚本地址
advisory_script_entrypoint String advisory 脚本入口
volatile_path_tracker VolatilePathTracker

创建:该结构体在 UIDartState 构造函数中创建。UIDartState 的创建时机呢?得看其派生类 DartIsolate,有 3 处创建的地方:

  1. DartIsolate::CreateRootIsolate
  2. DartIsolate::DartIsolateGroupCreateCallback
  3. DartIsolate::DartIsolateInitializeCallback